//
// Created by sjjmw on 3/24/2022.
//
#include "iostream"
#include "vector"
#include "list"
#include "algorithm"
#include "string"
#include "unordered_map"
struct BigInt{
    std::string s;
    int getwei(int i){
        if(s.size()<1+i){
            return 0;
        }
        return s[i]-'0';
    }
    void setwei(int i,int v){
        while (s.size()<1+i){//!!!!!!!!!!!此处不要忘记size是大于0 的
            s.push_back('0');
        }
        s[i]=v+'0';
    }
};
BigInt multiple(BigInt a,BigInt b){
    if(b.s.size()>a.s.size()){
        std::swap(a,b);
    }
    BigInt ret;
    int jinwei=0;
    for(int i=0;i<b.s.size();i++){
        for(int j=0;j<a.s.size();j++){
            int m=b.getwei(i)*a.getwei(j)+jinwei+ret.getwei(j+i);
            ret.setwei(j+i,m%10);
            jinwei=m/10;
        }
        if(jinwei>0){
            ret.setwei(ret.s.size(),jinwei);
            jinwei=0;
        }
    }
    return ret;
}

int main(){
    int a,b,c;
//    std::unordered_map<int,char> zhongjiang;
//std::vector<int> buf(7);

std::string str1,str2;
    while(
            std::getline(std::cin,str1)
//            std::cin>>a
    ){
        std::getline(std::cin,str2);
//        for(int i=0;i<a;i++)
        {
//            std::cin>>b;
//            handle();
            std::reverse(str1.begin(),str1.end());
            std::reverse(str2.begin(),str2.end());
            auto r= multiple({str1},{str2});
            for(int i=0;i<r.s.size();i++){
                printf("%c",r.s[r.s.size()-i-1]);
            }
            printf("\n");
//            std::cout<<r.s<<std::endl;
        }
//        handle(a);
    }
    return 0;
}